#include "HuevoCodorniz.h"

using namespace TP::Juego::Arena::Actores;
using namespace TP::Juego::Arena::Utilidades;
using namespace std;

HuevoCodorniz::HuevoCodorniz() : Huevo(HUEVOCODORNIZ){
    this->setVida(vida_huevo_codorniz);
}

HuevoCodorniz::HuevoCodorniz(const string& pNombre) : Huevo(pNombre){
    this->setVida(vida_huevo_codorniz);
}

HuevoCodorniz::~HuevoCodorniz() {}

IColisionado* HuevoCodorniz::colisionar(IColisionado* pColisionado){
	string& rol = pColisionado->getRol()->Nombre();
	
//	if (rol == PAJARITO) {
//		// Hacer 0.25 de dmg
//	} else if (rol == CAJA) {
//		// Hacer 0.5 de dmg
//	} else if (rol == PERIMETRO) {
//		// Destruirse
//	} else if (rol == PISO) {
//		// Destruirse
//	}
}

string HuevoCodorniz::aXML(){

    TiXmlDocument* doc = new TiXmlDocument();
    TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "", "" );
    doc->LinkEndChild( decl );
    
    doc->LinkEndChild(this->aElementoXML());

    TiXmlPrinter printer;
    doc->Accept(&printer);
    return printer.CStr();    
}


string HuevoCodorniz::aXML(const string& pPath){

    TiXmlDocument* doc = new TiXmlDocument(pPath.c_str());
    TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "", "" );
    doc->LinkEndChild( decl );
    
    doc->LinkEndChild(this->aElementoXML());
    
    TiXmlPrinter printer;
    doc->Accept(&printer);
    return printer.CStr();    
}

void HuevoCodorniz::parseXML (const string& pDescriptor){

    TiXmlDocument doc;
    doc.Parse(pDescriptor.c_str(), 0, TIXML_ENCODING_UTF8);
    this->deElementoXML(doc.FirstChildElement());
}

TiXmlElement* HuevoCodorniz::aElementoXML (){
    
    TiXmlElement * element = new TiXmlElement(HUEVOCODORNIZ);

    element->SetAttribute("nombre", this->Nombre().c_str());  
    element->LinkEndChild(this->getTrayectoria()->aElementoXML());
    return element;
}

void HuevoCodorniz::deElementoXML (TiXmlElement* pElemento){

    if (strcmp (pElemento->Value(), HUEVOCODORNIZ) == 0)
    {
        this->setNombre(pElemento->Attribute("nombre"));
        
        Trayectoria* trayectoria = new Trayectoria ();
        trayectoria->deElementoXML (pElemento->FirstChildElement());
        this->setTrayectoria(trayectoria);
    }
}


double HuevoCodorniz::getPoderAtaqueContraPajarito () {
    return danio_huevo_codorniz_pajaro;
}
    
double HuevoCodorniz::getPoderAtaqueContraSuperficie () {
    return danio_huevo_codorniz_superficie;
}


double HuevoCodorniz::getPoderAtaqueContraCerditos () {
    return danio_huevo_codorniz_cerditos;
}

double HuevoCodorniz::getRadio() {
    return radio_huevo_codorniz;
}

int HuevoCodorniz::getPuntos() {
    return puntos_huevo_codorniz;
}